package br.skytef.stmanager.daos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import br.skytef.stmanager.entities.DivergenciaClienteEntity;
import br.skytef.stmanager.utils.Pool;

public class DivergenciaClienteDao {
	/**
	 * Variável para conexão, obtido através de um Pool(br.skytef.stmanager.utils.Pool)
	 */
	private static Connection conexao = null;	
	/**
	 * Inserir nova tarefa/registro
	 * @param novaTarefa
	 */

	public void inserir(DivergenciaClienteEntity divergencia){
		try {
			conexao = Pool.getConnection();
			
			String query = "INSERT INTO divergenciaCliente(nomePlanilha,valor,tipo,data_divergencia,cliente_idCliente) "
					+ "VALUES (?,?,?,?,?);";
			
			PreparedStatement preparedStmt = conexao.prepareStatement(query);
			preparedStmt.setString				(1,divergencia.getNomePlanilha());
			preparedStmt.setDouble				(2,divergencia.getValor());
			preparedStmt.setString				(3,divergencia.getTipo());
			preparedStmt.setTimestamp			(4,divergencia.getData_divergencia());
			preparedStmt.setInt					(5,divergencia.getIdCliente());
			preparedStmt.execute();	
			conexao.close();

		} catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		}catch (ClassCastException e) {
			System.out.println("Classe erro: "+ e);
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
		}
	}
	public DivergenciaClienteEntity buscar(int idCliente){
		DivergenciaClienteEntity divergencia = null;
		try {
			String query = "SELECT * FROM divergenciaCliente "
					+ "WHERE cliente_idCliente = "+ idCliente +";";
			
			conexao = Pool.getConnection();
			PreparedStatement stmt = conexao.prepareStatement(query);
			ResultSet rs = stmt.executeQuery();
			if(rs.next()){
				divergencia = new DivergenciaClienteEntity();
				divergencia.setId(rs.getInt("id"));
				divergencia.setNomePlanilha(rs.getString("nomePlanilha"));
				divergencia.setValor(rs.getDouble("valor"));
				divergencia.setTipo(rs.getString("tipo"));
				divergencia.setData_divergencia(rs.getTimestamp("data_divergencia"));
				divergencia.setIdCliente(rs.getInt("cliente_idCliente"));
			}
			conexao.close();
		} catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		}catch (ClassCastException e) {
			System.out.println("Classe erro: "+ e);
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
		}
		return divergencia;
	}
	
	public void alterar(DivergenciaClienteEntity divergencia){
		try {
			conexao = Pool.getConnection();
			
			String query = "UPDATE divergenciaCliente SET nomePlanilha=?, valor=?, tipo=?, data_divergencia=?;";
			
			PreparedStatement preparedStmt = conexao.prepareStatement(query);
			preparedStmt.setString				(1,divergencia.getNomePlanilha());
			preparedStmt.setDouble				(2,divergencia.getValor());
			preparedStmt.setString				(3,divergencia.getTipo());
			preparedStmt.setTimestamp			(4,divergencia.getData_divergencia());
			preparedStmt.execute();	
			conexao.close();

		} catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		}catch (ClassCastException e) {
			System.out.println("Classe erro: "+ e);
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
		}
	}
	public void excluir(int i){
		try {
			conexao = Pool.getConnection();			
			String query = "DELETE FROM divergenciaCliente WHERE cliente_idCliente="+ i +";";			
			PreparedStatement preparedStmt = conexao.prepareStatement(query);
			preparedStmt.execute();	
			conexao.close();

		} catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		}catch (ClassCastException e) {
			System.out.println("Classe erro: "+ e);
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
		}
	}
}
